#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
#include <stdio.h>


template<typename T>

T fun(T x,T y)
{
	return x + y;
}
int main()
{
	cout << fun(1, 2) << endl;
	return 0;
}




//class A
//{
//
//	public:
//		A(int a = 0)
//			: _a(a)
//		{
//			cout << "A():" << this << endl;
//		}
//
//		~A()
//		{
//			cout << "~A():" << this << endl;
//		}
//
//	private:
//		int _a;
//
//};
//
//class Stack
//{
//public:
//	Stack(int capacity = 4)
//	{
//		cout << "Stack(int capacity = 4)" << endl;
//
//		_a = new int[capacity];
//		_top = 0;
//		_capacity = capacity;
//	}
//
//
//	~Stack()
//	{
//		cout << "~Stack()" << endl;
//		delete[] _a;
//		_a = nullptr;
//		_top = 0;
//		_capacity = 0;
//
//	}
//
//private:
//
//	int* _a;
//	int  _top;
//	int _capacity;	
//};
//
//int main()
//{
//	//int* p1 = new int;
//	//cout << p1 << endl;
//	//
//	//int* p2 = new int(3);
//	//
//	//int* p3 = new int[10] {1, 2, 3};
//
//	//delete p1;
//	//delete p2;
//	//delete[] p3;
//
//	//A* p4 = new A(1);
//	//delete p4;
//
//	//Stack* p5 = new Stack[10];
//	//cout << sizeof(p5) << endl;
//
//
//	//Stack* p6 = (Stack*) operator new (sizeof(Stack));
//	//delete[] p6;
//
//	Stack* p2 = (Stack*)operator new(sizeof(Stack));
//	operator delete(p2);
//
//	//printf("%p\n", p1);
//	
//	Stack* p3 = new Stack[10];
//	//delete[] p3;
//	//delete p3;
//
//	return 0;
//}




//class A
//{
//public:
//	A(int a = 0)
//		:_a(a)
//	{
//		cout << "A(int a)" << endl;
//	}
//	A(const A& aa)
//		:_a(aa._a)
//	{
//		cout << "A(const A& aa)" << endl;
//	}
//
//	~A()
//	{
//		cout << "~A()" << endl;
//	}
//private:
//	int _a;
//};
//
//A func()
//{
//	A aa1(1);
//	A aa2 = aa1;
//	A aa3 = aa2;
//	return aa1;
//}
//
////int main()
////{
////	A a= func();
////	return 0;
////}
//
//
//int main()
//{
//	//const char* p1 = "hello world";
//	//cout << p1 << endl;
//
//	const char* p = "abcdef";
//
//	//cout << p << endl;
//
//
//	/*char* p2 = (char*)p1;
//	++p2[0];
//	cout << p2 << endl;*/
//
//	return 0;
//}


//int main()
//{
//	char* p = "abcdefg";
//	p[0]++;
//	printf("%c\n",*p);
//	return 0;
//}